home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / docs / mags / ARTv1i1A.lha / smake.lha / ver.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-16  |  1.2 KB  |  83 lines

  1. /* ver.c  --  set/increment project version */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. int main(int argc, char **argv)
  7. {
  8.     FILE *f;
  9.     char verstr[32];
  10.     char *name = NULL;
  11.     int ver = 0, rev = 0, newver = -1, newrev = -1, nobump = 0;
  12.     int i, usage = 0;
  13.     
  14.     for (i=1; i<argc; i++)
  15.     {
  16.         if (argv[i][0] == '-')
  17.         {
  18.             switch (argv[i][1])
  19.             {
  20.             case 'v':
  21.                 if (argv[i+1])
  22.                     newver = atoi(argv[++i]);
  23.                 else
  24.                     usage = 1;
  25.                 break;
  26.             case 'r':
  27.                 if (argv[i+1])
  28.                     newrev = atoi(argv[++i]);
  29.                 else
  30.                     usage = 1;
  31.                 break;
  32.             case 'f':
  33.                 if (argv[i+1])
  34.                     name = argv[++i];
  35.                 else
  36.                     usage = 1;
  37.                 break;
  38.             case 'n':
  39.                 nobump = 1;
  40.                 break;
  41.             default:
  42.                 usage = 1;
  43.             }
  44.         }
  45.         else
  46.             usage = 1;
  47.     }
  48.     if (usage)
  49.     {
  50.         fprintf(stderr,"Usage: %s [-n] [-v version] [-r revision] [-f file]\n", argv[0]);
  51.         exit(10);
  52.     }
  53.     
  54.     if (!name)
  55.         name = "VERSION";
  56.     
  57.     if (f=fopen(name,"r"))
  58.     {
  59.         fgets(verstr,32,f);
  60.         sscanf(verstr,"%d.%d",&ver,&rev);
  61.         fclose(f);
  62.     }
  63.  
  64.     if (newver != -1)
  65.         ver = newver;
  66.  
  67.     if (newrev != -1)
  68.         rev = newrev;
  69.     else
  70.     if (!nobump)
  71.         rev++;
  72.  
  73.     if (f=fopen(name,"w"))
  74.     {
  75.         fprintf(f,"%d.%d\n",ver,rev);
  76.         fclose(f);
  77.     }
  78.     else
  79.     {
  80.         fprintf(stderr,"Error creating file %s.\n",name);
  81.         exit(20);
  82.     }
  83. }